package _12_Object._04_ToString;
/**
 * java 中的 toString() :
 * 设计目的 : 返回这个对象的字符串表示形式,客户把对象的属性值都展示给外界
 * 
 * 输出一个引用数据类型的时候,会自动调用该对象的 toString 方法
 * 
 * 比如之前调用类中的成员变量,调用什么就执行什么
 * 相当于我问你,交什么,你回答,张三
 * 我问你,多大了,你回答,18
 * 我不问,你就不回答了
 * 
 * 如果面试官说,你自我介绍一下,就是让你把你的属性都展示一遍,别让我一个个调用
 * 这个时候,需要用到 toString 方法
 * 
 * Object 中的 toString 方法,默认打印名字和地址
 * @author lenovo
 * @Date 2020年7月10日
 * @Time 下午9:39:20
 */
public class ToString_01 {

	public static void main(String[] args) {
		Person p1 = new Person("张三", 18);
		System.out.println(p1);
		System.out.println(new Person("张三2", 12));

		// 思考 : 既然输出引用数据类型的时候会调用带对象的toString方法
		// 那么如果输出一个为 null 的引用类型呢 ?
		// toSting 是成员方法,使用 null 值调用成员方法会报空指针异常
		// 但是输出语句中使用String.valueOf() 方法,利用三目运算符,解决了空指针的问题
		Person p2 = null;
		System.out.println(p2);
	}

}

class Person {
	String name;
	int age;

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}

	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

}